// 引入axios
import axios from 'axios'
// 引入store实例对象
import store from '../store'

//请求拦截
axios.interceptors.request.use(function(config){
    let token = store.getters['common/getToken']
    // 定义一个数组，然后把所有的不需要拦截地址在这里进行定义
    let otherPath = []

    // 如果请求地址包含在排除地址中，那么这个请求就不需要拦截
    if (otherPath.includes(config.url)) {
        return config
    } else {
        // 如果需要拦截，则需要对token进行校验
        // 不存在，直接返回一个错误信息
        if (!token) {
            return Promise.reject({ code: 400, message: '当前用户没有登录，所以不能发出异步请求' })
        } else {
            // 可以对config数据进行加工，添加上token数据
            config.headers.token = token
            // 直接发出请求
            return config
        }
    }
})



// 封装一个ajax请求方法
function ajaxFunc(req) {
    return new Promise(resolve => {
        // 把动态数据 url、method、params、data 抽取出来
        axios.request({
            // 设置请求地址
            url: req.url,
            method: req.method || 'GET',
            // 请求的基础地址
            baseURL: '/apis', 
            // 超时配置 -- 设置请求的最大时长
            timeout: 5000,
            // params参数配置 -- 它的参数会自动拼接到url地址上
            params: req.params || {},
            // data参数 -- 不能再get请求中使用，它是请求体参数
            data: req.data || {}
            // }).then(data => {
            // 请求返回的是一个response对象，希望得到数据
            // console.log(data.data)
        }).then(({ data }) => {
            // 可以对response对象进行解构取值
            // 返回数据
            resolve(data)
        }).catch(e => {
            console.log('----------------- 请求失败')
            resolve(e)
        })
    })

}

export default ajaxFunc

//引入
// import ajax from '路径'
//调用
// ajax({ url: '/user/app/code', params: { phone: this.phone } })